package code1.hash;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * 原题链接：https://leetcode.cn/problems/intersection-of-two-arrays/description/
 */
public class P349 {

    //方法1：利用set
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> hashSet=new HashSet<>();
        Set<Integer> resultSet=new HashSet<>();
        for(int i=0;i<nums1.length;i++){
            hashSet.add(nums1[i]);
        }
        for(int i=0;i<nums2.length;i++){
            if(hashSet.contains(nums2[i])){
                resultSet.add(nums2[i]);
            }
        }
        int[] result = resultSet.stream().mapToInt(x -> x).toArray();
        return  result;
    }

    //方法2：用hash数组
    public int[] intersection2(int[] nums1, int[] nums2) {
        boolean[] hash1=new boolean[1002];
        boolean[] hash2=new boolean[1002];
        for(int i=0;i<nums1.length;i++)
            hash1[nums1[i]]=true;
        for(int i=0;i<nums2.length;i++)
            hash2[nums2[i]]=true;
        int count=0;
        for(int i=0;i<hash1.length;i++){
            if(hash1[i]&&hash2[i])
                count++;
        }
        int[] result=new int[count];
        count=0;
        for(int i=0;i<hash1.length;i++){
            if(hash1[i]&&hash2[i])
                result[count++]=i;
        }
        return result;
    }

}
